Software developers often use monitoring tools to trace and analyze code. Instrumentation may be used to monitor calls to a particular function, referred to as a target function, and to perform operations such as logging the values of the function's arguments. Instrumentation may be inserted into target functions before program execution or may be inserted during runtime of a program that uses the target functions.
Runtime instrumentation involves intercepting functions during program execution and inserting instrumentation into the binary code. One technique is to directly modify the target function's code so that control goes to an instrumentation tool specified location. However, such techniques may require that the instrumentation tool have prior knowledge of target function information, such as the call signature.